
## 1.  Как сложить (вычесть, перемножить) две точки?

```python
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p1 = Point(2, 7)
p2 = Point(2, 7)

p4 = p1 + p2
print(p4) # (4, 14)
print(p4) # Точка (4, 14)

```

### 2. Как возвратить новую точку?
```python
print(p4) # Точка (4, 14)
```

### 3. Как сложить объект с кортежем

```python
p1 = Point(2, 7)
p2 = Point(12, 7)

p3 = p1 + p2
p4 = p1 + (10,20)
p4 = (10,20) + p1
```



### 4. Что возвращает метод inverse в классе

```python

def inverse(self, value=-1): # return что?
    self.x *= value
    self.y *= value

print(p1.inverse())
```

меняет состояние?
```python

print('Before', p1)
p1.inverse()
print('After', p1)

```

##  теперь понятно как передать другой объект класса! И поработать с его свойствами

```python
from math import hypot, dist


class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def distance(self, other):
        ...


p1 = Point(2, 7)
p2 = Point(12, 7)


dist = p1.distance(p2) # так ок

dist = Point.distance(p1,p2) # так не очень

print(dist)

```

### 5*. Найдите длину ломаной линии
`points = [Point(2, 7), Point(12, 7), Point(5, -2), Point(10, -16), Point(-12, 0)]`


### Задача 6. Известно, что в Python мы можем соединять два списка между собой с помощью оператора +:

```python
lst = [1, 2, 3] + [4.5, -3.6, 0.78]
```
Но нет реализации оператора -, который бы убирал из списка соответствующие значения вычитаемого списка, как это показано в примере:
```python
lst = [1, 2, 3, 4, 5, 6] - [5, 6, 7, 8, 1] # [2, 3, 4] (порядок следования оставшихся элементов списка должен сохраняться)
```

Давайте это поправим и создадим такой функционал. Для этого нужно объявить класс с именем `NewList`, объекты которого создаются командами:
```python
lst = NewList() # пустой список
lst = NewList([-1, 0, 7.56, True]) # список с начальными значениями
```
Реализуйте для этого класса работу с оператором вычитания, чтобы над объектами класса NewList можно было выполнять следующие действия:

```python
lst1 = NewList([1, 2, -4, 6, 10, 11, 15, False, True])
lst2 = NewList([0, 1, 2, 3, True])
res_1 = lst1 - lst2 # NewList: [-4, 6, 10, 11, 15, False]
lst1 -= lst2 # NewList: [-4, 6, 10, 11, 15, False]
res_2 = lst2 - [0, True] # NewList: [1, 2, 3]
res_3 = [1, 2, 3, 4.5] - res_2 # NewList: [4.5]
a = NewList([2, 3])
res_4 = [1, 2, 2, 3] - a # NewList: [1, 2]
```
Также в классе `NewList` необходимо объявить метод:

> get_list() - для возвращения результирующего списка объекта класса NewList

Например:

> lst = res_2.get_list() # [1, 2, 3]


